<template>
  <div class="search-history">
    <van-cell title="搜索历史">
      <div v-if="isDeleteShow">
        <span @click="deleteAll">全部删除</span>
        &nbsp;&nbsp;
        <span @click="isDeleteShow = false">完成</span>
      </div>
      <van-icon name="delete" @click="isDeleteShow = true" v-else />
    </van-cell>
    <van-cell v-for="(history, index) in searchHistories" :key="index" :title="history"
      @click="onClick(history, index)">
      <van-icon name="close" v-show="isDeleteShow" />
    </van-cell>
  </div>
</template>

<script>
import { setItem } from '@/utils/storage.js'
import { mapState } from 'vuex'

export default {
  name: 'SearchHistory',
  components: {},
  props: {
    searchHistories: {
      type: Array,
      required: true
    }
  },
  data () {
    return {
      isDeleteShow: false // 删除的显示状态
    }
  },
  // 计算属性
  computed: {
    ...mapState(['user'])
  },
  // 监控data中的数据变化
  watch: {},
  methods: {
    // 删除全部
    deleteAll () {
      // this.searchHistories = []
      // 不能这么使用，只能调用父组件方法去请空
      this.$emit('deleteAll')
      if (this.user) {
        // 登录状态
        setItem('search-internet-histories', null)
      }
      setItem('search-local-histories', null)
    },
    // 删除或跳转记录
    onClick (history, index) {
      if (this.isDeleteShow) {
        // 删除状态，执行删除操作
        this.searchHistories.splice(index, 1)
        if (this.user) {
          // 登录状态
          setItem('search-internet-histories', this.searchHistories)
        }
        setItem('search-local-histories', this.searchHistories)
      } else {
        // 非删除状态，进行跳转查询结果
        this.$emit('search', history)
      }
    }
  },
  // 生命周期 - 创建完成（可以访问当前this实例）
  created () { },
  // 生命周期 - 挂载完成（可以访问DOM元素）
  mounted () { },
  beforeCreate () { }, // 生命周期 - 创建之前
  beforeMount () { }, // 生命周期 - 挂载之前
  beforeUpdate () { }, // 生命周期 - 更新之前
  updated () { }, // 生命周期 - 更新之后
  beforeDestroy () { }, // 生命周期 - 销毁之前
  destroyed () { }, // 生命周期 - 销毁完成
  activated () { } // 如果页面有keep-alive缓存功能，这个函数会触发
}
</script>

<style scoped lang='less'>
</style>
